昨天在power介紹完連結方式後
今天稍微複習一下power bi的資料檢視跟關聯功能
自動化power bi的方法
並且會帶入寫好的python丟到windows自動排程功能
介紹
讓我們寫的Python可以自動依照時間執行
還有幾招好用的自動化輔助功能(螢幕截圖、自動登入網頁等)
目標大綱:
tips - 安裝matplotlib
今天換一個新環境發現
如果沒有安裝這個套件可能會導致Python Script無法匯入進去
如果有遇到相關錯誤的麻煩先執行這行喔
pip install matplotlib
資料檢視頁面可以看到有幾個常見功能
常用功能可以參考這邊
功能 | 說明 |
---|---|
資料來源匯入 | 匯入多種資料來源如 Excel、CSV、資料庫等,並在 Power Query Editor 中進行資料處理。 |
欄位篩選與移除 | 移除不必要的欄位或僅保留有用欄位,精簡資料集。 |
新增計算欄 | 使用公式語法(M 語言)新增自訂欄位,如計算貨幣轉換等。 |
資料篩選與分類 | 根據條件篩選資料列,或將資料依照欄位進行分組,應用聚合函數。 |
合併與附加查詢 | 合併查詢(類似 SQL JOIN)將多個表合併,或附加查詢(類似 SQL UNION)將多表合併為一個。 |
資料格式轉換 | 將欄位的資料類型轉換為數值、文字或日期,或進行拆分和合併欄位操作。 |
移除重複值 | 檢查資料中的重複項並移除,以清理資料。 |
填補缺失值 | 用前一個值或指定值填補空欄,或移除有缺失值的資料列。 |
資料透視與逆透視 | 建立透視表(行轉列)或逆透視表(列轉行)來整理資料結構。 |
應用步驟與自動化 | 每個轉換操作都會記錄成步驟,可自動應用於資料刷新,保證一致的資料處理過程。 |
這邊要額外說明的是 |
轉換資料功能
大家可以在資料檢視這邊看到轉換資料
功能
從新彈出來的視窗我們可以觀察到
可以透過內建功能或是透過Power Query Editor來去編輯資料的格式(Power Query就很像是PowerBI 的程式語言)
我們可以透過這個介面看到資料怎麼Input
跟Output
也可以透過右邊的步驟區域來選擇是否返回上一動作,或是修改編輯(超強的流程控制功能)
如果確認無誤之後可以點選右邊的儲存並關閉
功能 | 說明 |
---|---|
表格關聯(Relationships) | 顯示並管理不同表格之間的關聯,建立、編輯或刪除表格之間的關係,實現跨表資料分析。 |
多對一與一對一關係 | 支援「多對一」或「一對一」關係設置,確保表格資料正確連結。 |
自訂欄位和度量值 | 在模型檢視中新增自訂計算欄位和度量值(Measures),方便進行複雜運算。 |
方向性設定(Cross-filtering Direction) | 設定過濾方向(單向或雙向),影響報表中資料的篩選方式。 |
資料分類與格式設定 | 設定欄位的資料類型(如數字、文字、日期等)及格式,確保資料在分析中正確顯示。 |
隱藏不需要的欄位 | 隱藏不需要的欄位,讓報表視覺化更簡潔,僅顯示相關欄位。 |
tips - 資料模型檢視
從這邊可以看到關聯模型畫面
我們可以看到customers的userid
跟 sheet1的userid
自動連結
可以點選進階管理器
在這邊可以自動調整powerbi的關聯對應
也可以建立關係模組
tips - 關聯類型
符號說明
|| 表示「一」
o{ 和 }o 表示「多」
連接線之間的關係文字描述了具體的關係,例如 "has", "belongs to", "manages", "enrolls in"。
關係類型 | 術語 | 說明 | 範例 |
---|---|---|---|
一對一 | One-to-One (1:1) | 每個表中的每一行與另一表中的唯一一行相關聯。 | 每位使用者僅有一個個人檔案。 |
一對多 | One-to-Many (1:N) | 一個表中的每一行可以與另一表中的多行相關聯。 | 一個客戶可以擁有多個訂單。 |
多對一 | Many-to-One (N:1) | 多行來自一個表的資料與另一表中的唯一一行相關聯。 | 多個訂單可以由同一位客戶擁有。 |
多對多 | Many-to-Many (M:N) | 表中的多行可以與另一表中的多行相關聯,通常需要一個聯接表。 | 學生可以選擇多門課程,每門課程有多位學生。 |
也因為這個關係
我們才可以透過userid
的綁訂把最後圖表做出來喔
在執行自動排成更新資料前,先給大家看一下限制
方法 | 說明 | 條件限制 |
---|---|---|
Power BI Service 排程 | 在 Power BI 服務中設定資料集的自動刷新排程。 | - 需將報表發佈到 Power BI 服務。- 依帳戶計劃(Pro 或 Premium)限制刷新次數。 |
Power BI Desktop 手動刷新 | 在 Power BI Desktop 中手動刷新資料集以獲取最新數據。 | - 每次必須手動操作。 |
使用 PowerShell 指令 | 利用 PowerShell 腳本透過 Power BI API 自動更新資料集。 | - 需要適當的 API 權限和授權。- 需掌握 PowerShell 語法及相關指令。 |
使用資料閘道 | 若資料來源在本地端,可以使用資料閘道來允許 Power BI 服務訪問本地資料。 | - 需正確設置資料閘道,並確保資料來源連接正常。 |
Power Automate | 使用 Power Automate 自動化刷新過程,根據條件觸發資料集刷新。 | - 需具備 Power Automate 訂閱和權限。- 需設定觸發條件和流程。 |
API 調用 | 透過 REST API 調用自動刷新 Power BI 資料集。 | - 需具備適當的 API 權限和授權。- 需編寫相應的程式碼以實現調用。 |
使用 Power BI Gateway | 設定 Power BI Gateway 以支持本地資料源的排程刷新。 | - 需安裝和配置資料閘道。- 需確保資料來源可在資料閘道下訪問。 |
如果是本機的powerbi我們透過手動點選重新整理資料
來更新資料
或是有透過案件模擬的方式來開啟報表操作重新整理
如果你的公司或是有自己上傳到server上的話
就可以透過排成設定
來更新資料來源
如微軟官方得這張圖
排程所需注意事項
注意事項 | 說明 |
---|---|
資料來源的認證 | 確保所有資料來源都已正確設置認證。如果資料來源需要認證,需在 Power BI Server 上提供有效的憑證。 |
資料閘道(Gateway)設置 | 若使用本地資料來源,必須安裝和配置 Power BI Gateway。確保資料閘道運行正常且連接到 Power BI Service。 |
排程刷新時間 | 設定合理的排程刷新時間,避免在使用高峰期間進行刷新,以減少對性能的影響。 |
刷新頻率限制 | 根據 Power BI 的計劃(如 Pro 或 Premium),檢查每日刷新次數的限制。 |
資料集大小限制 | 確保資料集不超過 Power BI Server 的大小限制,特別是在處理大型資料集時。 |
報表權限 | 確保用戶擁有適當的權限來查看和刷新報表。如果用戶沒有足夠的權限,可能無法查看最新資料。 |
錯誤處理 | 設定警報和通知,以便在刷新失敗時及時獲得通知,方便排查問題。 |
背景資料刷新 | 如果需要,考慮啟用背景資料刷新功能,這樣用戶在查看報表時可以獲取最新資料。 |
執行計劃 | 檢查執行計劃,確保在特定時間點不會有多個資料集同時進行刷新,以免影響性能。 |
步驟大概是這樣
按下Win +R執行這個
taskschd.msc
可以選每天
比較簡單
為了好Demo我選21:20分來測試
程式執行碼
C:\Users\User\AppData\Local\Programs\Python\Python312\python.exe
如果不知道python可以打where python
新增引述這邊需要點選執行的python script
C:\Users\User\Desktop\crawl\yahoo.py
如果是我使用我們之前爬蟲學到的程式自動存檔要多加一個斜線\
喔
# 將數據保存到Excel文件
df.to_excel('C:\\Users\\User\\Desktop\\crawl\\stock_data.xlsx', index=False)
print("數據已成功保存到2330_stock_data.xlsx文件中。")
第一個斜線是跳脫字元
跳脫字元(escape characters)是用來表示一些特殊字符或控制符的字元序列,通常以反斜線(\)開頭。這些跳脫字元在字符串中有特定的含義,用來插入那些難以直接輸入的字符或具有特殊含義的字符。
跳脫字元 | 描述 | 例子 | 結果 |
---|---|---|---|
\\ |
反斜線符號(backslash) | "C:\\path\\file" |
C:\path\file |
\' |
單引號 | 'It\'s Python' |
It's Python |
\" |
雙引號 | "He said \"Hi\"" |
He said "Hi" |
\n |
換行(newline) | "Hello\nWorld" |
Hello World |
\t |
制表符(tab) | "Hello\tWorld" |
Hello World |
\r |
回車(carriage return) | "Hello\rWorld" |
World 覆蓋 Hello |
\b |
退格符(backspace) | "Hello\bWorld" |
HellWorld |
\f |
換頁符(form feed) | "Hello\fWorld" |
Hello World (換頁) |
\a |
鈴聲(alert or bell) | "Hello\aWorld" |
(系統發出鈴聲) |
\v |
垂直制表符(vertical tab) | "Hello\vWorld" |
Hello (垂直空格)World |
\0 |
空字元(null character) | "Hello\0World" |
Hello (空字符無輸出) |
\xhh |
以16進制表示的字元 | "\x48\x65\x6C\x6C\x6F" |
Hello |
\uhhhh |
以Unicode表示的字元(16位元) | "\u0048\u0065" |
He |
\Uhhhhhhhh |
以Unicode表示的字元(32位元) | "\U0001F600" |
😀 (笑臉表情) |
pip install pyautogui
import pyautogui
# 截取整個螢幕的畫面
screenshot = pyautogui.screenshot()
# 保存截圖到指定路徑
screenshot.save('screenshot.png')
如果你想要自動登入喜歡的網頁做點事情
本文以學習目的非營利或販售等事項
可以透過前面學到的Selenuum執行
我們可以看到登入button的html tag
<div role="button" class="xxxx">登入/註冊</div>
接者就是要告訴python點集登入後輸入帳號跟密碼
自於位置也要去查看帳號跟密碼位置
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 設定帳號和密碼
username = 'your_account' # 替換為你的 網頁帳號
password = 'passowrd' # 替換為你的 網頁密碼
# 設置 Chrome 的無痕模式
options = webdriver.ChromeOptions()
options.add_argument('--incognito')
driver = webdriver.Chrome(options=options)
# 打開 xxx首頁
driver.get('https://www.example.com')
# 等待頁面加載
time.sleep(5)
# 定位登入/註冊按鈕並點擊
login_register_button = driver.find_element(By.XPATH, "//div[@role='button' and contains(text(), '登入/註冊')]")
login_register_button.click()
# 等待登入畫面彈出
time.sleep(5) # 調整等待時間確保登入框加載完成
# 定位帳號輸入框並輸入帳號
username_input = driver.find_element(By.CLASS_NAME, 'accounut class') # 使用適當的 class 名稱
username_input.send_keys(username)
# 定位密碼輸入框並輸入密碼
password_input = driver.find_elements(By.CLASS_NAME, 'password class')[1] # 使用索引獲取第二個元素
password_input.send_keys(password)
# 發送回車鍵 (Enter) 提交登入
password_input.send_keys(Keys.RETURN)
# 等待幾秒以確認是否登錄成功
time.sleep(5)
# 關閉瀏覽器
driver.quit()
建議自己在爬蟲前可詳細閱讀該網站的規範
或是真的不確定可以詢問網站管理員喔~!! 以免觸法
項目 | 說明 |
---|---|
使用條款與隱私政策 | 大多數網站的使用條款會規範是否允許自動化工具的使用,違反可能會被封禁帳號。 |
是否允許自動化工具 | 一些網站明確禁止自動化工具登入或數據抓取,違反可能帶來法律風險或限制訪問。 |
個人資料保護 | 使用他人帳號自動化登入未經授權可能涉及隱私法規,如 GDPR、CCPA,這可能是違法的。 |
登入自己的帳號 | 使用自動化工具登入自己的帳號通常沒問題,但仍需遵守網站的條款和政策。 |
登入他人帳號 | 未經他人授權使用其帳號進行自動化登入可能涉及非法行為,如帳號劫持。 |
電腦犯罪法 | 未經授權存取、修改他人帳號資料可能觸犯電腦犯罪相關法律,如《CFAA》。 |
道德考量 | 即便不違法,自動化登入可能對伺服器產生壓力,影響其他用戶體驗,屬於不道德行為。 |
建議 | 1. 登入自己的帳號可行,需遵守網站條款。2. 未經授權使用他人帳號可能違法。 |
好啦~爬蟲跟自動化就進入到尾聲拉。
Python 是一個功能強大且靈活的語言,特別是在處理自動化任務方面表現卓越。學習自動化和網頁自動登入,可以幫助開發者解決日常重複性工作,提高生產力,減少手動操作的錯誤。然而,在使用這些工具時,我們也需要平衡效率與道德、法律的約束
。
優點 | 缺點 | 應用場景 |
---|---|---|
節省時間與精力,減少重複性工作 | 可能違反網站的使用條款,帶來法律風險 | 日常登入自動化處理,簡化工作流程 |
自動化流程降低手動操作錯誤 | 網頁結構變動可能導致腳本失效,需要維護 | 自動化抓取數據進行分析,例如電商、金融領域 |
具有靈活性,可針對不同場景應用 | 自動化操作對伺服器有負擔,可能影響其他用戶 | 軟體測試與應用程式部署中的自動化測試 |